package org.wisdom.ab.apis;

import java.util.List;

import org.springframework.web.bind.annotation.*;
import org.wisdom.ab.dto.StaffDto;
import org.wisdom.annotation.WisdomFeignClient;
import org.wisdom.vo.PageModel;
import org.wisdom.vo.ResponseResult;

/**
 * 成员管理API
 *
 * @author 张智研
 * @date 2022/05/13 14:54
 */
@WisdomFeignClient(name = "${wisdom.ab.name:wisdom-ab}", path = "/${wisdom.ab.name:wisdom-ab}/staff", contextId = "wisdom-ab-staff")
public interface StaffController {

    /**
     * 创建成员
     *
     * @author 张智研
     * @date 2022/05/13 14:57
     * @param staffDto
     *            成员信息
     * @return org.wisdom.vo.ResponseResult<java.lang.String>
     */
    @PostMapping
    ResponseResult<String> save(@RequestBody StaffDto staffDto);

    /**
     * 读取成员
     *
     * @author 张智研
     * @date 2022/05/13 14:45
     * @param staffId
     *            用户ID
     * @return org.wisdom.vo.ResponseResult<org.wisdom.ab.dto.StaffDto>
     */
    @GetMapping("{staffId}")
    ResponseResult<StaffDto> get(@PathVariable("staffId") String staffId);

    /**
     * 删除成员
     *
     * @author 张智研
     * @date 2022/05/13 14:58
     * @param staffIds
     *            成员id
     * @return org.wisdom.vo.ResponseResult<java.lang.String>
     */
    @DeleteMapping("/{staffIds}")
    ResponseResult<String> delete(@PathVariable("staffIds") String staffIds);

    /**
     * 查询成员列表
     *
     * @author 张智研
     * @date 2022/05/16 07:55
     * @param staffDto
     *            查询条件
     * @return org.wisdom.vo.ResponseResult<org.springframework.data.domain.Page<org.wisdom.ab.dto.StaffDto>>
     */
    @GetMapping("/list")
    ResponseResult<PageModel<StaffDto>> list(StaffDto staffDto);

    /**
     * 查询部门成员列表
     *
     * @author 张智研
     * @date 2022/05/20 09:36
     * @param departmentId
     *            部门id
     * @return org.wisdom.vo.ResponseResult<org.wisdom.vo.PageModel<org.wisdom.ab.dto.StaffDto>>
     */
    @GetMapping("/list_dept_user")
    ResponseResult<List<StaffDto>> listDepartmentUser(@RequestParam("departmentId") String departmentId);
}
